# 1、函数名可以作为变量的值赋给变量
"""
def func():
    print(1)


a = func
a()
print(type(a))
"""


# 2、函数名可以作为元素
"""
def func():
    print(1)
    

lst = [func, func, func]
for i in lst:
    i()
"""


# 3、函数名可以作为参数
"""
def func(f):

    return f()


def foo():
    print(1)


func(foo)
"""


# 4、函数名可以作为函数的返回值
"""
def func():
    def foo():
        print(1)
    return foo


func()()
print(func())
"""


# 5、函数的取值和嵌套

def func():
    def func2():
        def foo():
            print(1)
        return foo
    return func2()


print(func())